Dart
Dart
Dart
๐Ÿ“š Modul Bab 2

Variables, Operators & Comments

Dasar-dasar Pemrograman Dart

Gunakan โ† โ†’ atau tombol navigasi

๐ŸŽฏ Tujuan Pembelajaran

๐Ÿ“ฆ

Variabel

Memahami fungsi variabel sebagai tempat menyimpan data dalam program Dart.

๐Ÿ”ข

Tipe Data

Membedakan String, int, double, bool, List, Map, null, var, final, const, dan dynamic.

โš™๏ธ

Operator

Menggunakan operator aritmatika, assignment, perbandingan, logika, ternary, dan null-aware.

๐Ÿ’ฌ

Komentar

Menulis komentar kode yang membantu dokumentasi dan keterbacaan program.

๐Ÿ“‹ Agenda Pembelajaran

๐Ÿ“ฆ

1. Variables (Variabel)

Tempat menyimpan data - String, int, double, bool, List, Map

โš™๏ธ

2. Operators (Operator)

Melakukan operasi - Aritmatika, Perbandingan, Logika

๐Ÿ’ฌ

3. Comments (Komentar)

Catatan dalam kode untuk dokumentasi

๐ŸŽฏ

4. Mini Proyek

Latihan praktis: Kalkulator, Biodata, Penilaian

1.1
Variables (Variabel)
Tempat Menyimpan Data

๐Ÿ“ฆ Apa itu Variabel?

Bayangkan variabel seperti kotak atau wadah yang kita gunakan untuk menyimpan sesuatu.

Contoh dalam Kehidupan Sehari-hari:

"Budi"

Kotak "Nama"

Isi: teks/String

20

Kotak "Umur"

Isi: angka bulat/int

170.5

Kotak "Tinggi"

Isi: angka desimal/double

false

Kotak "Menikah"

Isi: benar/salah/bool

Dalam pemrograman, kita memberi nama pada kotak tersebut, dan nilai yang kita simpan di dalamnya.

๐Ÿท๏ธ Metode Penamaan Variabel

Nama variabel harus jelas, mudah dibaca, dan mengikuti aturan Dart. Nama yang baik membuat kode lebih mudah dipahami.

โœ… Aturan yang Benar
  • Gunakan huruf, angka, underscore _, dan dollar $.
  • Tidak boleh diawali angka.
  • Tidak boleh memakai spasi.
  • Tidak boleh memakai keyword Dart seperti class, void, if.
  • Nama variabel bersifat case-sensitive: nama berbeda dengan Nama.
// โœ… Benar String namaSiswa = 'Budi'; int umur2 = 16; double nilai_rata_rata = 87.5; bool isAktif = true; // โŒ Salah String 2nama = 'Budi'; // diawali angka int umur siswa = 16; // ada spasi String class = '10B'; // keyword Dart

โœ๏ธ Gaya Penamaan yang Dianjurkan

Dart menganjurkan gaya lowerCamelCase untuk variabel, yaitu kata pertama huruf kecil, kata berikutnya diawali huruf besar.

Boleh, tapi kurang umum
nama_siswa jumlah_barang

Masih terbaca, tetapi di Dart lebih umum dipakai untuk file, bukan variabel.

Hindari
ns x data1

Terlalu singkat atau tidak menjelaskan isi variabel.

๐Ÿ’ก Tips Praktis

Pilih nama yang menjawab pertanyaan: โ€œdata apa yang disimpan?โ€. Contoh: gunakan nilaiUjian, bukan hanya n.

1๏ธโƒฃ Menggunakan Tipe Data Eksplisit

Cara ini kita menyebutkan secara jelas jenis data yang akan disimpan.

String nama = 'Budi'; // String = tipe data untuk teks/kata-kata int umur = 20; // int = tipe data untuk angka bulat (integer) double tinggi = 170.5; // double = tipe data untuk angka desimal bool isMahasiswa = true; // bool = tipe data untuk nilai benar/salah
๐Ÿ’ก Mengapa perlu menyebutkan tipe data?

Supaya Dart tahu cara memperlakukan data tersebut. Angka bisa dihitung (10 + 5), tapi kata-kata tidak!

2๏ธโƒฃ Menggunakan var (Otomatis)

Dart akan otomatis menebak tipe data dari nilai yang diberikan.

var nama = 'Budi'; // Dart melihat 'Budi' โ†’ otomatis tahu: tipe String var umur = 20; // Dart melihat 20 โ†’ otomatis tahu: tipe int var tinggi = 170.5; // Dart melihat 170.5 โ†’ otomatis tahu: tipe double var isMahasiswa = true; // Dart melihat true โ†’ otomatis tahu: tipe bool
๐Ÿ“Œ Kapan menggunakan var?

Gunakan var ketika tipe data sudah jelas dari nilainya. Ini membuat kode lebih ringkas!

3๏ธโƒฃ Menggunakan dynamic

dynamic adalah tipe data yang bisa berubah-ubah.

dynamic nilai = 100; print(nilai); // Output: 100 nilai = 'Seratus'; // Berubah jadi teks, TIDAK ERROR! print(nilai); // Output: Seratus nilai = true; // Berubah jadi boolean! print(nilai); // Output: true
โš ๏ธ Peringatan!

dynamic sebaiknya jarang digunakan karena mudah terjadi error yang tidak terduga dan kode jadi sulit dipahami.

๐Ÿ”’ Konstanta: final dan const

Konstanta adalah variabel yang nilainya TIDAK BISA DIUBAH setelah pertama kali diisi.

final

final String kota = 'Jakarta'; // Nilai ditentukan saat program berjalan final waktu = DateTime.now(); // โœ… OK! Waktu baru diketahui saat run

const

const double PI = 3.14159; // Nilai sudah pasti sebelum program jalan const waktu = DateTime.now(); // โŒ ERROR! const harus sudah tahu nilainya

๐Ÿ”ข Tipe Data: Numbers (Angka)

// INT - Angka Bulat (tanpa koma) int usia = 25; int suhu = -5; int jumlahSiswa = 0; // DOUBLE - Angka Desimal double berat = 65.5; double tinggi = 170.0; double ipk = 3.75; // NUM - Bisa int atau double num angka = 100; angka = 100.5; // Bisa juga double

int

Untuk menghitung jumlah (siswa, barang, umur)

double

Untuk pengukuran (berat, tinggi, harga)

num

Ketika tidak yakin akan dapat int atau double

๐Ÿ“ Tipe Data: String (Teks)

String adalah tipe data untuk menyimpan kata, kalimat, atau teks.

// String dengan single quote String pesan = 'Hello Dart'; String nama = 'Budi Santoso'; // String dengan double quote String alamat = "Jl. Sudirman No. 123"; // String dengan beberapa baris (multiline) String surat = ''' Kepada Yth. Bapak/Ibu Guru Dengan hormat... ''';
โš ๏ธ Tips Penting

Teks HARUS diapit dengan tanda petik (' ' atau " "). Tanpa petik, Dart akan menganggapnya sebagai nama variabel!

โœ… Tipe Data: Boolean (Benar/Salah)

Boolean hanya punya dua nilai: true (benar) atau false (salah).

bool isActive = true; // Aktif bool isMahasiswa = false; // Bukan mahasiswa bool sudahMenikah = false; // Belum menikah bool lulus = true; // Sudah lulus // Digunakan untuk kondisi bool dewasa = (umur >= 17); // Jika umur >= 17, true

Kapan pakai boolean?

  • Untuk status: aktif/tidak aktif, lulus/tidak lulus
  • Untuk kondisi: sudah/belum, boleh/tidak boleh
  • Untuk membuat keputusan dalam program

๐Ÿ“‹ Tipe Data: List (Daftar)

List adalah kumpulan data yang disimpan berurutan.

// List berisi angka List<int> angkaList = [1, 2, 3, 4, 5]; // List berisi teks List<String> buah = ['Apel', 'Jeruk', 'Mangga']; // Mengakses item (dimulai dari 0) print(buah[0]); // Output: Apel (item pertama) print(buah[1]); // Output: Jeruk (item kedua) // Menambah item baru buah.add('Pisang'); print(buah.length); // Output: 4
๐Ÿ“Œ Penting!

Index (nomor urut) dimulai dari 0, bukan 1. Item pertama: index 0, Item kedua: index 1.

๐Ÿ—บ๏ธ Tipe Data: Map (Kunci-Nilai)

Map seperti kamus. Ada kata (kunci) dan artinya (nilai).

// Map dengan kunci String dan nilai int Map<String, int> umurSiswa = { 'Andi': 20, 'Budi': 21, 'Citra': 19 }; // Mengakses nilai dengan kunci print(umurSiswa['Andi']); // Output: 20 // Map dengan berbagai tipe nilai Map<String, dynamic> mahasiswa = { 'nama': 'Andi', 'umur': 20, 'ipk': 3.75, 'aktif': true };

โ“ Tipe Data: Null (Kosong)

null artinya tidak ada nilai atau kosong.

// Variabel yang BISA menerima null (pakai tanda ?) String? namaOpsional; // Sekarang isinya null int? angkaOpsional = null; print(namaOpsional); // Output: null // Variabel BIASA tidak bisa null String nama = null; // โŒ ERROR! String nama = 'Budi'; // โœ… HARUS diisi nilai // Mengisi nilai setelahnya namaOpsional = 'Ahmad'; print(namaOpsional); // Output: Ahmad
1.2
Operators (Operator)
Melakukan Operasi pada Data

โž• Arithmetic Operators

Operator untuk operasi matematika.

int a = 10, b = 3; print(a + b); // 13 (Penjumlahan) print(a - b); // 7 (Pengurangan) print(a * b); // 30 (Perkalian) print(a / b); // 3.33... (Pembagian โ†’ double) print(a ~/ b); // 3 (Pembagian Bulat) print(a % b); // 1 (Sisa Bagi/Modulus)
Operator Nama Contoh Hasil
+ Penjumlahan 10 + 3 13
- Pengurangan 10 - 3 7
* Perkalian 10 * 3 30
/ Pembagian 10 / 3 3.33...
~/ Pembagian Bulat 10 ~/ 3 3
% Modulus 10 % 3 1

๐Ÿ”ผ Increment & Decrement

Operator untuk menambah atau mengurangi nilai sebesar 1.

Post-Increment/Decrement

int c = 5; print(c++); // Tampilkan 5, LALU c jadi 6 print(c); // Output: 6 print(c--); // Tampilkan 6, LALU c jadi 5 print(c); // Output: 5

Pre-Increment/Decrement

int c = 5; print(++c); // Tambah dulu jadi 6, LALU tampilkan print(c); // Output: 6 print(--c); // Kurang dulu jadi 5, LALU tampilkan print(c); // Output: 5

๐Ÿ“ Assignment Operators

Operator untuk memberikan nilai ke variabel dengan cara singkat.

int x = 10; x += 5; // x = x + 5 โ†’ x = 15 x -= 3; // x = x - 3 โ†’ x = 12 x *= 2; // x = x * 2 โ†’ x = 24 x ~/= 4; // x = x ~/ 4 โ†’ x = 6 x %= 4; // x = x % 4 โ†’ x = 2
๐Ÿ’ก Mengapa pakai operator ini?

Lebih ringkas, cepat ditulis, dan menghindari kesalahan ketik!

โš–๏ธ Comparison Operators

Operator untuk membandingkan dua nilai. Hasilnya selalu boolean.

int a = 10, b = 20; print(a == b); // false (Sama dengan) print(a != b); // true (Tidak sama dengan) print(a > b); // false (Lebih besar) print(a < b); // true (Lebih kecil) print(a >= 10); // true (Lebih besar atau sama) print(a <= 9); // false (Lebih kecil atau sama)
Operator Arti Contoh Hasil
== Sama dengan 10 == 20 false
!= Tidak sama dengan 10 != 20 true
> Lebih besar 10 > 20 false
<< /td> Lebih kecil 10 < 20 true
>= Lebih besar atau sama 10 >= 10 true
<=< /td> Lebih kecil atau sama 10 <= 9 false

๐Ÿ”— Logical Operators

Operator untuk menggabungkan beberapa kondisi.

bool isStudent = true; bool hasID = false; int age = 20; // AND (&&) - SEMUA harus true print(isStudent && hasID); // false print(isStudent && (age >= 18)); // true // OR (||) - SALAH SATU true sudah cukup print(isStudent || hasID); // true // NOT (!) - Membalikkan nilai print(!hasID); // true print(!isStudent); // false

&& (AND)

Seperti "DAN" - Semua harus true

|| (OR)

Seperti "ATAU" - Salah satu true cukup

! (NOT)

Seperti "BUKAN" - Membalik nilai

โ“ Ternary Operator

Format: kondisi ? nilai_jika_true : nilai_jika_false

int nilai = 75; // Cara panjang: String status; if (nilai >= 70) { status = 'Lulus'; } else { status = 'Tidak Lulus'; } // Cara singkat dengan ternary: String status = nilai >= 70 ? 'Lulus' : 'Tidak Lulus'; // Ternary bersarang String grade = nilai >= 85 ? 'A' : nilai >= 70 ? 'B' : nilai >= 60 ? 'C' : 'D';

๐Ÿ›ก๏ธ Null-Aware Operators

Operator untuk menangani nilai null (kosong).

// ?? (if-null) - Jika null, gunakan nilai default String? nama; String tampil = nama ?? 'Tidak ada nama'; print(tampil); // Output: Tidak ada nama // ??= (null-aware assignment) - Assign hanya jika null int? angka; angka ??= 100; // Karena null, diisi 100 angka ??= 200; // Tidak berubah, tetap 100 // ?. (null-aware access) - Akses hanya jika tidak null String? text; print(text?.length); // null (tidak error)
1.3
Comments (Komentar)
Catatan dalam Kode

๐Ÿ’ฌ Jenis-Jenis Comments

Comments adalah catatan dalam kode yang TIDAK dijalankan oleh program.

Single-Line (//)

// Ini komentar satu baris int umur = 20; // Menampilkan umur

Multi-Line (/* */)

/* Program Kalkulator Dibuat oleh: Budi Tanggal: 5 Oktober 2024 */

Documentation Comments (///)

/// Menghitung luas persegi panjang /// [panjang] adalah panjang dalam cm /// [lebar] adalah lebar dalam cm double hitungLuas(double panjang, double lebar) { return panjang * lebar; }

โœ… Best Practices Comments

โœ… BAIK

// Menghitung diskon member 20% + promo 5% double totalDiskon = 0.20 + 0.05; // FIXME: Bug perhitungan pajak double pajak = harga * 0.10; // TODO: Tambahkan validasi input int umur = 20;

โŒ BURUK

// Membuat variabel nama String nama = 'Budi'; // Membuat variabel umur dengan nilai 20 int umur = 20; // Menampilkan nama print(nama);
๐Ÿ’ก Prinsip

"Code should be self-documenting" - Gunakan nama variabel yang jelas. Comments hanya untuk menjelaskan HAL YANG TIDAK JELAS dari kode.

๐ŸŽฏ
Mini Proyek
Latihan Praktis di Kelas

๐Ÿงฎ Proyek 1: Kalkulator Sederhana

Durasi: 15-20 menit | Tingkat: โญ Mudah

void main() { double angka1 = 15.5; double angka2 = 4.5; print('Penjumlahan: ${angka1 + angka2}'); print('Pengurangan: ${angka1 - angka2}'); print('Perkalian: ${angka1 * angka2}'); print('Pembagian: ${angka1 / angka2}'); }

Yang Perlu Dicoba:

  • Ubah nilai angka1 dan angka2
  • Coba dengan angka negatif
  • Coba pembagian dengan 0

๐Ÿ“‹ Proyek 2: Biodata Mahasiswa

Durasi: 20-25 menit | Tingkat: โญโญ Sedang

void main() { var nama = 'John Doe'; int umur = 25; double ipk = 3.75; bool lulus = true; List<String> hobi = ['Membaca', 'Coding']; print('Nama: $nama'); print('Umur: $umur tahun'); print('IPK: $ipk'); print('Status: ${lulus ? "Lulus" : "Belum"}'); }

Latihan:

  • Ganti dengan biodata Anda sendiri
  • Tambahkan field: cita-cita, organisasi

๐Ÿ“Š Proyek 3: Sistem Penilaian

Durasi: 25-30 menit | Tingkat: โญโญ Sedang

void main() { double nilaiTugas = 85.0; // Bobot 30% double nilaiUTS = 75.0; // Bobot 30% double nilaiUAS = 80.0; // Bobot 40% double nilaiAkhir = (nilaiTugas * 0.30) + (nilaiUTS * 0.30) + (nilaiUAS * 0.40); String grade = nilaiAkhir >= 85 ? 'A' : nilaiAkhir >= 70 ? 'B' : nilaiAkhir >= 60 ? 'C' : 'D'; print('Nilai Akhir: $nilaiAkhir'); print('Grade: $grade'); }

๐Ÿ“ Ringkasan

๐Ÿ“ฆ

Variables

String, int, double, bool, List, Map, null. Gunakan var untuk praktis, final/const untuk konstanta.

โš™๏ธ

Operators

Aritmatika (+, -, *, /), Perbandingan (==, <,>), Logika (&&, ||, !), Ternary (?:)

๐Ÿ’ฌ

Comments

Single-line (//), Multi-line (/* */), Documentation (///). Jelaskan yang tidak jelas!

๐ŸŽฏ Ingat!

Praktik adalah kunci. Kerjakan mini proyek untuk memahami konsep dengan baik!

๐Ÿ“
Tugas Rumah
Deadline: 1 Minggu | Total: 100 Poin

๐Ÿ“‹ Daftar Tugas Rumah

๐Ÿ›’

Tugas 1: Kasir Toko

Sistem kasir dengan diskon & pajak

โญโญ Sedang | 25 poin

โš–๏ธ

Tugas 2: Kalkulator BMI

Hitung BMI & analisis kesehatan

โญโญ Sedang | 25 poin

๐Ÿ“Š

Tugas 3: Sistem Absensi

Rekapitulasi & syarat ujian

โญโญโญ Sulit | 25 poin

๐Ÿ’ฐ

Tugas 4: Kalkulator Gaji

Slip gaji lengkap karyawan

โญโญโญ Sulit | 25 poin

โฐ Deadline

Semua tugas dikumpulkan dalam 1 minggu. Keterlambatan akan mengurangi nilai!

๐Ÿ›’ Tugas 1: Kasir Toko Sederhana

Nilai: 25 poin | Tingkat: โญโญ Sedang

Deskripsi

Buat program kasir toko yang menghitung:

  • Subtotal setiap barang
  • Total belanja & diskon
  • Pajak 11%
  • Kembalian

Syarat Diskon

  • Member: 15% semua pembelian
  • Non-Member:
    • > Rp100.000: 10%
    • > Rp250.000: 15%
    • > Rp500.000: 20%

Penilaian

  • [10 poin] Perhitungan subtotal
  • [5 poin] Logika diskon
  • [5 poin] Perhitungan pajak
  • [3 poin] Kembalian
  • [2 poin] Format output rapi
๐ŸŽ Bonus +5 poin

Validasi uang bayar & point reward (1 poin per Rp10.000)

๐Ÿงพ Tugas 1: Format Output Struk

=================================== TOKO SERBAGUNA JAYA =================================== Tanggal: 5 Oktober 2024 Kasir : Budi Santoso ----------------------------------- [Nama Barang] Harga ร— Qty ----------------------------------- Beras 5kg 60.000 ร— 1 Subtotal 60.000 Minyak Goreng 2L 30.000 ร— 2 Subtotal 60.000 ----------------------------------- Total Belanja XXX.XXX Diskon Member (15%) XXX.XXX ----------------------------------- Subtotal setelah diskon XXX.XXX Pajak (11%) XXX.XXX ----------------------------------- TOTAL BAYAR XXX.XXX =================================== Tunai XXX.XXX Kembalian XXX.XXX ===================================
๐Ÿ“Œ Instruksi

Minimal 5 barang, setiap barang punya quantity. Gunakan toStringAsFixed(0) untuk format rupiah.

โš–๏ธ Tugas 2: Kalkulator BMI

Nilai: 25 poin | Tingkat: โญโญ Sedang

Rumus BMI

BMI = Berat (kg) / (Tinggi (m))ยฒ

Kategori BMI (Asia-Pasifik)

  • < 18.5: Kurus
  • 18.5 - 22.9: Normal
  • 23.0 - 24.9: Overweight
  • 25.0 - 29.9: Obesitas 1
  • โ‰ฅ 30: Obesitas 2

Penilaian

  • [8 poin] Perhitungan BMI benar
  • [7 poin] Kategori BMI tepat
  • [5 poin] Berat ideal benar
  • [3 poin] Rekomendasi sesuai
  • [2 poin] Format output
๐ŸŽ Bonus +5 poin

Grafik visual BMI & kalori harian

๐Ÿ“Š Tugas 2: Format Output BMI

======================================== KALKULATOR BMI (Body Mass Index) ======================================== DATA PRIBADI: Nama : John Doe Jenis Kelamin : Laki-laki Usia : 25 tahun Tinggi Badan : 175 cm (1.75 m) Berat Badan : 70 kg ---------------------------------------- HASIL PERHITUNGAN: BMI Anda : 22.86 Kategori : Normal โœ“ Status : Berat badan ideal ---------------------------------------- ANALISIS KESEHATAN: Range BMI Normal: 18.5 - 22.9 Berat Ideal Min : XX.X kg Berat Ideal Max : XX.X kg ========================================
๐Ÿ“Œ Tips

Berat ideal min = 18.5 ร— tinggiยฒ, max = 22.9 ร— tinggiยฒ. Gunakan toStringAsFixed(2) untuk BMI.

๐Ÿ“Š Tugas 3: Sistem Absensi

Nilai: 25 poin | Tingkat: โญโญโญ Sulit

Aturan Kehadiran

  • Hadir: 100%
  • Izin: 75%
  • Sakit: 50%
  • Alpha: 0%

Syarat Ikut Ujian

  • Persentase โ‰ฅ 75% DAN
  • Alpha maksimal 2 kali DAN
  • Kehadiran efektif โ‰ฅ 11

Penilaian

  • [7 poin] Kehadiran efektif
  • [6 poin] Persentase benar
  • [6 poin] Logika syarat (&&)
  • [4 poin] Analisis detail
  • [2 poin] Format output
๐ŸŽ Bonus +5 poin

Validasi input & grafik kehadiran

๐Ÿ“‹ Tugas 3: Format Output Absensi

============================================= REKAPITULASI ABSENSI MAHASISWA ============================================= DATA MAHASISWA: Nama : Sarah Ahmad NPM : 2023110003 Mata Kuliah : Pemrograman Dart --------------------------------------------- DETAIL KEHADIRAN: Total Pertemuan : 14 kali Hadir : 11 kali (100%) Izin : 1 kali (75%) Sakit : 1 kali (50%) Alpha : 1 kali (0%) --------------------------------------------- PERHITUNGAN: Kehadiran Efektif : 11 + (1ร—0.75) + (1ร—0.5) + (1ร—0) = 12.25 pertemuan Persentase Hadir : (12.25 / 14) ร— 100% = 87.50% --------------------------------------------- ANALISIS SYARAT: โœ“ Persentase >= 75% : YA (87.50%) โœ“ Alpha maksimal 2 kali : YA (1 kali) โœ“ Kehadiran efektif >= 11 : YA (12.25) --------------------------------------------- STATUS: โœ“ MEMENUHI SYARAT UJIAN =============================================

๐Ÿ’ฐ Tugas 4: Kalkulator Gaji

Nilai: 25 poin | Tingkat: โญโญโญ Sulit

Komponen Gaji

  • Tunjangan Jabatan: Staff 10%, Supervisor 20%, Manager 30%
  • Tunjangan Tetap: Transport Rp500rb, Makan Rp400rb
  • Bonus Kinerja: Rating 5โ†’15%, 4โ†’10%, 3โ†’5%
  • Bonus Masa Kerja: 1-2thโ†’2%, 3-5thโ†’5%, 6-10thโ†’10%

Potongan

  • BPJS Kesehatan: 1%
  • BPJS TK: 2%
  • PPh21: โ‰ค5jtโ†’5%, โ‰ค10jtโ†’15%, >10jtโ†’25%
๐ŸŽ Bonus +10 poin

Fungsi terbilang, THR, export file

๐Ÿงพ Tugas 4: Format Slip Gaji

==================================================== PT. MAJU SEJAHTERA SLIP GAJI KARYAWAN ==================================================== PERIODE : Oktober 2024 DATA KARYAWAN: Nama : Ahmad Fauzi Jabatan : Supervisor Masa Kerja : 4 tahun 3 bulan Rating Kinerja : 4 (Good) ---------------------------------------------------- PENGHASILAN: Gaji Pokok Rp 6.000.000 Tunjangan: - Jabatan (20%) Rp 1.200.000 - Transport Rp 500.000 - Makan Rp 400.000 Bonus: - Kinerja (10%) Rp 600.000 - Masa Kerja (5%) Rp 300.000 ---------------------------------------------------- GAJI BRUTO Rp 9.000.000 ---------------------------------------------------- POTONGAN: BPJS Kesehatan (1%) Rp 60.000 BPJS Ketenagakerjaan (2%) Rp 120.000 Pajak PPh21 (15%) Rp 1.350.000 ---------------------------------------------------- TOTAL POTONGAN Rp 1.530.000 ==================================================== GAJI BERSIH Rp 7.470.000 ====================================================

๐Ÿ’ก Tips Mengerjakan Tugas

๐Ÿ“‹

1. Persiapan

  • Baca instruksi teliti
  • Buat pseudocode/flowchart
  • Identifikasi variabel
  • Tentukan tipe data yang tepat
๐Ÿ’ป

2. Saat Coding

  • Nama variabel jelas
  • Gunakan comments
  • Pisahkan perhitungan step-by-step
  • Test skenario berbeda
๐Ÿ”

3. Testing

  • Test member/non-member
  • Cek edge cases (nilai 0, negatif)
  • Validasi semua output
  • Cek format tampilan
// โœ“ BAIK: Nama variabel jelas + comments informatif double gajiPokok = 5000000; // Hitung tunjangan jabatan Supervisor 20% double tunjanganJabatan = gajiPokok * 0.20; // โœ— BURUK: Nama tidak jelas, tanpa comments double gp = 5000000; double tj = gp * 0.20;

๐Ÿ“ Contoh Pseudocode (Tugas 1)

Langkah-langkah:

1. Input data barang (nama, harga, qty) 2. Hitung subtotal setiap barang 3. Jumlahkan semua subtotal 4. Cek status member 5. Hitung diskon sesuai syarat 6. Hitung pajak dari total setelah diskon 7. Hitung total bayar 8. Input uang dibayar 9. Hitung kembalian 10. Tampilkan struk

Skenario Test:

โš ๏ธ Test Cases
  • Member: Diskon langsung 15%
  • Non-Member < 100rb: Tanpa diskon
  • Non-Member > 100rb: Diskon 10%
  • Non-Member > 250rb: Diskon 15%
  • Non-Member > 500rb: Diskon 20%
๐ŸŽ‰
Terima Kasih!
Selamat Belajar Dart Programming

Ada Pertanyaan?